home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #11 / Amiga Plus CD - 2002 - No. 11.iso / amigaoscd / amigapluscd / AP-Website / forum / wbboard / _functions.php < prev    next >
PHP Script  |  2002-03-15  |  49KB  |  1,078 lines

  1. <?php
  2. @error_reporting(7);
  3. require "_data.inc.php";
  4. require "class_db_zugriff.php";
  5. $fctime = 30;
  6.  
  7. //get vars
  8. //...
  9. $boardid=intval($boardid);
  10. $styleid=intval($styleid);
  11. $threadid=intval($threadid);
  12. $userid=intval($userid);
  13. $id=intval($id);
  14. $pmid=intval($pmid);
  15.  
  16. $phpversion_array = phpversion();
  17. $phpversion_nr = $phpversion_array[0].".".$phpversion_array[2].$phpversion_array[4];
  18. if (extension_loaded("zlib") && ($phpversion_nr >= 4.04)) {
  19.     ob_start("ob_gzhandler");
  20. }
  21.  
  22. $db_zugriff = new db_zugriff;
  23. $db_zugriff->appname="WoltLab Burning Board";
  24. $db_zugriff->database=$mysqldb;
  25. $db_zugriff->server=$mysqlhost;
  26. $db_zugriff->user=$mysqluser;
  27. $db_zugriff->password=$mysqlpassword;
  28. $db_zugriff->connect();
  29.  
  30. session_name("sid");
  31. session_start();
  32. if(!$sid) $sid = session_id();
  33.  
  34. if(!$REQUEST_URI) {
  35.  if($PATH_INFO) $REQUEST_URI = $PATH_INFO;
  36.  else $REQUEST_URI = $PHP_SELF;
  37.  if($QUERY_STRING) $REQUEST_URI .= "?" . $QUERY_STRING;
  38. }
  39.  
  40. if(!$HTTP_SESSION_VARS[ssip]) {
  41.     $ssip = getenv(REMOTE_ADDR);
  42.     session_register("ssip");
  43. }
  44. elseif($HTTP_SESSION_VARS[ssip]!=getenv(REMOTE_ADDR)) {
  45.     session_unset();
  46.     header("Location: ".basename($REQUEST_URI)."");
  47.     exit;
  48. }
  49. $user_id=$HTTP_COOKIE_VARS['user_id'];
  50. $user_password=$HTTP_COOKIE_VARS['user_password'];
  51. if(!$user_id) $user_id = $HTTP_SESSION_VARS[user_id];
  52. if(!$user_password) $user_password = $HTTP_SESSION_VARS[user_password];
  53.  
  54. if(check_userdata($user_id,$user_password)) {
  55.         $userdata = $db_zugriff->query_first("SELECT bb".$n."_user_table.*, bb".$n."_groups.* FROM bb".$n."_user_table LEFT JOIN bb".$n."_groups ON (bb".$n."_groups.id=bb".$n."_user_table.groupid) WHERE userid='$user_id'");
  56.         if($userdata[blocked]) $blocked = 1;
  57.         $user_name = $userdata[username];
  58.         $user_group = $userdata[groupid];
  59.         $old_time = $userdata[lastvisit];
  60.         $new_time = $userdata[lastactivity];
  61.         $session_link = $userdata[session_link];
  62.         $hide_signature = $userdata[hide_signature];
  63.         $hide_userpic = $userdata[hide_userpic];
  64.         $prunedays = $userdata[prunedays];
  65.         $umaxposts = $userdata[umaxposts];
  66.         $u_bbcode = $userdata[bbcode];
  67.         if($userdata[style_set]) $styleid = $userdata[style_set];
  68.         if($new_time < (time()-900)) {
  69.          $old_time = $new_time;
  70.          $new_time = time();
  71.          $db_zugriff->query("UPDATE bb".$n."_user_table SET lastvisit = lastactivity, lastactivity = '$new_time' WHERE userid = '$user_id'");
  72.         }
  73.         else {
  74.          $new_time = time();
  75.          $db_zugriff->query("UPDATE bb".$n."_user_table SET lastactivity = '$new_time' WHERE userid = '$user_id'");
  76.         }
  77. }
  78. else {
  79.     $user_id=0;
  80.     $userdata = $db_zugriff->query_first("SELECT * FROM bb".$n."_groups WHERE default_group = 1");
  81.     $user_group = $userdata[0];
  82.     eval ("\$user_name = \"".gettemplate("lg_anonymous")."\";");
  83.     $old_time = $HTTP_SESSION_VARS[old_time];
  84.     if(!$old_time) $old_time = time();
  85.     $new_time = time();
  86.     session_register("old_time");
  87.     session_register("new_time");
  88. }
  89.  
  90. $url_jump = $HTTP_SESSION_VARS[url_ak];
  91. if(!$url_jump) $url_jump = urlencode(basename($REQUEST_URI));
  92. if(!strstr($REQUEST_URI,"action.php") && !strstr($REQUEST_URI,"register.php") && !strstr($REQUEST_URI,"misc.php")) $url_ak = urlencode($REQUEST_URI);
  93. else $url_ak = $HTTP_SESSION_VARS[url_ak];
  94. session_register("url_ak");
  95. session_register("url_jump");
  96.  
  97. if(!$session_link) $session = "&sid=".$sid;
  98. if(!$session_link) $session2 = "?sid=".$sid;
  99.  
  100. $result = $db_zugriff->query("SELECT * FROM bb".$n."_config");
  101. $row = $db_zugriff->fetch_array($result);
  102. $j = mysql_num_fields($result);
  103. for($i = 0; $i < $j; $i++) {
  104.     $k = mysql_field_name($result,$i);
  105.     $$k = editDBdata($row[$k]);
  106. }
  107. $db_zugriff->free_result($result);
  108. $badwords = explode("\n", $badwords);
  109. if($umaxposts) $eproseite = $umaxposts;
  110.  
  111. if($styleid) $style_result = $db_zugriff->query("SELECT * FROM bb".$n."_style WHERE styleid = '$styleid'");
  112. else {
  113.     if($boardid) $board_style = $db_zugriff->query_first("SELECT style_set FROM bb".$n."_boards WHERE boardid = '$boardid'");
  114.     if($board_style[0]) $style_result = $db_zugriff->query("SELECT * FROM bb".$n."_style WHERE styleid = '$board_style[0]'");
  115.     else $style_result = $db_zugriff->query("SELECT * FROM bb".$n."_style WHERE default_style = 1");
  116. }
  117.  
  118. $row = $db_zugriff->fetch_array($style_result);
  119. $j = mysql_num_fields($style_result);
  120. for($i = 0; $i < $j; $i++) {
  121.     $k = mysql_field_name($style_result,$i);
  122.     $$k = editDBdata($row[$k]);
  123. }
  124. $db_zugriff->free_result($style_result);
  125.  
  126. // ####################### Wartungsmodus ###############################
  127. if($boardoff && !$userdata[canviewoffboard]) {
  128.     require("_header.php");
  129.     require("_board_jump.php");
  130.     eval("dooutput(\"".gettemplate("wartungsmodus")."\");");
  131.     exit;
  132. }
  133. // ####################### user blocked ###############################
  134. if(($blocked == 1 || !$userdata[canviewboard]) && !strstr($REQUEST_URI,"action.php") && !strstr($REQUEST_URI,"misc2.php") && !strstr($REQUEST_URI,"register.php")) {
  135.     require("_header.php");
  136.     require("_board_jump.php");
  137.     if(!$user_id) eval ("\$login = \"".gettemplate("access_error_login")."\";");
  138.     else eval ("\$login = \"".gettemplate("access_error_logout")."\";");
  139.     eval("dooutput(\"".gettemplate("access_error")."\");");
  140.     exit;
  141.  
  142. useronline($user_id);
  143.  
  144. // ######################## Boardpasswort ############################
  145. if((strstr($REQUEST_URI,"print.php") || strstr($REQUEST_URI,"board.php") || strstr($REQUEST_URI,"thread.php") || strstr($REQUEST_URI,"newthread.php") || strstr($REQUEST_URI,"reply.php") || strstr($REQUEST_URI,"edit.php")) && $boardid != "home" && $boardid != "pm" && $boardid != "search" && $boardid != "profil") {
  146.     $password = $db_zugriff->query_first("SELECT boardpassword FROM bb".$n."_boards WHERE boardid = '$boardid'");
  147.     if($password[0] && md5($password[0]) != $HTTP_COOKIE_VARS['cbpassword'][$boardid]) {
  148.         require("_header.php");
  149.         require("_board_jump.php");
  150.         eval("dooutput(\"".gettemplate("boardpw")."\");");
  151.         exit;
  152.     } 
  153.  
  154. // ######################## Boardaccess ############################
  155. if((strstr($REQUEST_URI,"print.php") || strstr($REQUEST_URI,"board.php") || strstr($REQUEST_URI,"thread.php") || strstr($REQUEST_URI,"newthread.php") || strstr($REQUEST_URI,"reply.php") || strstr($REQUEST_URI,"edit.php")) && $boardid != "home" && $boardid != "pm" && $boardid != "search" && $boardid != "profil" && !check_boardobject($boardid,$user_group,"boardpermission")) {
  156.     require("_header.php");
  157.     require("_board_jump.php");
  158.     if(!$user_id) {
  159.         if($session) $session_post = "<input type=\"hidden\" name=\"sid\" value=\"$sid\">";
  160.         eval ("\$login = \"".gettemplate("access_error_login")."\";");
  161.     }
  162.     else eval ("\$login = \"".gettemplate("access_error_logout")."\";");
  163.     eval("dooutput(\"".gettemplate("access_error")."\");");
  164.     exit;
  165. }
  166.  
  167. # -------- user funktionen
  168.  
  169. function getUserid($usernick) {
  170.         global $n,$db_zugriff;
  171.         $result = $db_zugriff->query_first("SELECT userid FROM bb".$n."_user_table WHERE username='$usernick'");
  172.         return $result[userid];
  173. }
  174. function getUsername($userid) {
  175.         global $n,$db_zugriff;
  176.         $result = $db_zugriff->query_first("SELECT username FROM bb".$n."_user_table WHERE userid='$userid'");
  177.         return $result[username];
  178. }
  179. function getUserEmail($userid) {
  180.         global $n,$db_zugriff;
  181.         $result = $db_zugriff->query_first("SELECT useremail FROM bb".$n."_user_table WHERE userid='$userid'");
  182.         return $result[useremail];
  183. }
  184. function check_userdata($userid,$password) {
  185.     global $n, $db_zugriff;
  186.         $result = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE userid='$userid' AND userpassword = '$password' AND activation = 1");
  187.     return $result[0];        
  188. }
  189. function checkUser($username,$password) {
  190.         global $n,$db_zugriff;
  191.         $result = $db_zugriff->query_first("SELECT userpassword FROM bb".$n."_user_table WHERE username='$username' && activation='1'");
  192.         if(!$result[userpassword]) return 0;
  193.         elseif($result[userpassword]==$password) return 2;
  194.         else return 1;
  195. }
  196. function getUserPW($userid) {
  197.         global $n,$db_zugriff;
  198.         $result = $db_zugriff->query_first("SELECT userpassword FROM bb".$n."_user_table WHERE userid='$userid'");
  199.         return $result[userpassword];
  200. }
  201. function getUserrang($posts,$groupid) {
  202.         global $n,$db_zugriff;
  203.         $rank = $db_zugriff->query_first("SELECT rank FROM bb".$n."_ranks WHERE groupid = $groupid AND posts<='$posts' ORDER by posts DESC");
  204.         return $rank[rank];
  205. }
  206.  
  207. # -------- beitrags erstellung
  208.  
  209. function check_posts($text) {
  210.  global $image, $image_ext, $maximage;
  211.  $image_ext = explode("\r\n",$image_ext);
  212.  $count=0;
  213.  do {    
  214.   preg_match("/\[img]([^\"]*)\[\/img\]/siU",$text,$exp);
  215.   if(!$exp[0]) break;
  216.   $text = str_replace($exp[0],"",$text);
  217.   $extension = strtolower(substr(strrchr($exp[1],"."),1));
  218.   if(!in_array($extension, $image_ext)) {
  219.    return 1;
  220.    break;
  221.   }
  222.   $count++;
  223.  } while($exp[0]!="" && $count<=$maximage);
  224.  if($count>$maximage) return 1;    
  225. }
  226.  
  227. function check_signature($text) {
  228.  global $sigimage, $sigimage_ext, $sigmaximage;
  229.  $image_ext = explode("\r\n",$sigimage_ext);
  230.  $count=0;
  231.  do {    
  232.   preg_match("/\[img]([^\"]*)\[\/img\]/siU",$text,$exp);
  233.   if(!$exp[0]) break;
  234.   $text = str_replace($exp[0],"",$text);
  235.   $extension = strtolower(substr(strrchr($exp[1],"."),1));
  236.   if(!in_array($extension, $image_ext)) {
  237.    return 1;
  238.    break;
  239.   }
  240.   $count++;
  241.  } while($exp[0]!="" && $count<=$sigmaximage);
  242.  if($count>$sigmaximage) return 1;    
  243. }
  244.  
  245. function editPostdata($data) {
  246.  $data = str_replace("'","´", $data);
  247.  $data = str_replace("\"",""", $data);
  248.  return $data;
  249. }
  250. function parseURL($out) {
  251.  $urlsearch[]="/([^]_a-z0-9-=\"'\/])((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si";
  252.  $urlsearch[]="/^((https?|ftp):\/\/|www\.)([^ \r\n\(\)\*\^\$!`\"'\|\[\]\{\};<>]*)/si";
  253.  $urlreplace[]="\\1[URL]\\2\\4[/URL]";
  254.  $urlreplace[]="[URL]\\1\\3[/URL]";
  255.  $emailsearch[]="/([\s])([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
  256.  $emailsearch[]="/^([_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,}))/si";
  257.  $emailreplace[]="\\1[EMAIL]\\2[/EMAIL]";
  258.  $emailreplace[]="[EMAIL]\\0[/EMAIL]";
  259.  $out = preg_replace($urlsearch, $urlreplace, $out);
  260.  if (strpos($out, "@")) $out = preg_replace($emailsearch, $emailreplace, $out);
  261.  return $out;
  262. }
  263.  
  264. # -------- beitrags anzeige
  265.  
  266. function editDBdata($data) {
  267.  $data = str_replace("´","'", $data);
  268.  $data = str_replace(""","\"", $data); 
  269.  return $data;
  270. }
  271. function censor($out) {
  272.  global $cover,$badwords;
  273.  reset($badwords);
  274.  if(count($badwords)) {
  275.   while (list($key, $val) = each($badwords)) {
  276.    $val = trim($val);
  277.    if(!$val) continue;
  278.    if(preg_match("/\{(.+)\}/si", $val, $exp)) {
  279.     $val = $exp[1];
  280.     $position = strpos($val, "=");
  281.     if($position===false) {
  282.      $searcharray[] = "/([\s]{1})$val([\s]{1})/si";                             
  283.      $replacearray[] = "\\1".str_repeat($cover, strlen($val))."\\2";
  284.      $searcharray[] = "/^$val([\s]{1})/si";                             
  285.      $replacearray[] = str_repeat($cover, strlen($val))."\\1";
  286.      $searcharray[] = "/([\s]{1})$val$/si";                             
  287.      $replacearray[] = "\\1".str_repeat($cover, strlen($val));
  288.     }
  289.     else {
  290.      $pcover = substr($val, $position+1);
  291.      $val = substr($val, 0, $position);
  292.      $searcharray[] = "/([\s]{1})$val([\s]{1})/si";                             
  293.      $replacearray[] = "\\1".$pcover."\\2";
  294.      $searcharray[] = "/^$val([\s]{1})/si";                             
  295.      $replacearray[] = $pcover."\\1";
  296.      $searcharray[] = "/([\s]{1})$val$/si";                             
  297.      $replacearray[] = "\\1".$pcover;
  298.     }
  299.    }
  300.    else {
  301.     $position = strpos($val, "=");
  302.     if($position===false) {
  303.      $out = eregi_replace("$val","".str_repeat($cover, strlen($val))."", $out);                            
  304.      $searcharray[] = "/$val/si";                             
  305.      $replacearray[] = str_repeat($cover, strlen($val));
  306.     }
  307.     else {
  308.      $pcover = substr($val, $position+1);
  309.      $val = substr($val, 0, $position);
  310.      $searcharray[] = "/$val/si";                             
  311.      $replacearray[] = $pcover;
  312.     }
  313.    }
  314.   }
  315.  }
  316.  return ifelse(count($searcharray) && count($replacearray),preg_replace($searcharray, $replacearray, $out),$out);
  317. }
  318. function smilies($out) {
  319.     global $smiliecache;
  320.     if(!count($smiliecache)) $smiliecache = getsmilies();
  321.     for($i = 0; $i < count($smiliecache); $i++) $out=str_replace ($smiliecache[$i]['text'], "<img src=".$smiliecache[$i]['path']." border=0>", $out);
  322.         return $out;
  323. }
  324.  
  325. function getsmilies() {
  326.     global $db_zugriff, $n;
  327.     $result = $db_zugriff->query("SELECT smiliespath as path, smiliestext as text FROM bb".$n."_smilies");
  328.     $count = 0;
  329.     while($row = $db_zugriff->fetch_array($result)) {
  330.         $smiliecache[$count] = $row;
  331.         $count++;
  332.     }
  333.     return $smiliecache;
  334. }
  335. function editPost($out,$disable_smilies=0) {
  336.         global $bbcode,$html,$smilies,$badwords;
  337.         $out = editDBdata($out);
  338.         if(!$html)  { 
  339.             $out = str_replace("<","&lt;",$out);
  340.             $out = str_replace(">","&gt;",$out);
  341.             $out = str_replace("<","<",$out);
  342.             $out = str_replace(">",">",$out);
  343.       }
  344.         $out = nl2br($out);
  345.         if($smilies && !$disable_smilies) $out = smilies($out);
  346.         if($bbcode) $out = prepare_code($out);
  347.         $out = censor($out);
  348.         $out = nt_wordwrap($out);
  349.         return $out;
  350. }
  351. function editSignatur($out,$disable_smilies) {
  352.         global $sigbbcode,$sightml,$sigsmilies,$badwords;
  353.         $out = editDBdata($out);
  354.         if(!$sightml)  { 
  355.             $out = str_replace("<","&lt;",$out);
  356.             $out = str_replace(">","&gt;",$out);
  357.             $out = str_replace("<","<",$out);
  358.             $out = str_replace(">",">",$out);
  359.       }
  360.         $out = nl2br($out);
  361.         if($sigsmilies && !$disable_smilies) $out = smilies($out);
  362.         if($sigbbcode) $out = prepare_code($out);
  363.         $out = censor($out);
  364.         $out = nt_wordwrap($out);
  365.         return $out;
  366. }
  367.  
  368. function ifelse ($expression,$returntrue,$returnfalse) {
  369.     if (!$expression) return $returnfalse;
  370.     else return $returntrue;
  371. }
  372.  
  373. function formatcodetag($code) {
  374.     return "<blockquote><pre><font size=1>code:</font><hr>".str_replace("<br>","",str_replace("\\\"","\"",$code))."<hr></pre></blockquote>";
  375. }
  376.  
  377. function formaturl($url, $title="", $maxwidth=60, $width1=40, $width2=-15) {
  378.  if(!trim($title)) $title=$url;
  379.  if(!preg_match("/[a-z]:\/\//si", $url)) $url = "http://$url";
  380.  if(strlen($title)>$maxwidth) $title = substr($title,0,$width1)."...".substr($title,$width2);
  381.  return "<a href=\"$url\" target=\"_blank\">".str_replace("\\\"", "\"", $title)."</a>";
  382. }
  383.  
  384. function formatlist($list, $listtype="") {
  385.  $listtype = ifelse(!trim($listtype), "",  " type=\"$listtype\"");
  386.  $list = str_replace("\\\"","\"",$list);
  387.  if ($listtype) return "<ol$listtype>".str_replace("[*]","<li>", $list)."</ol>";
  388.  else return "<ul>".str_replace("[*]","<li>", $list)."</ul>";
  389. }
  390.  
  391. function phphighlite($code) {
  392.  
  393.  $code = str_replace(">", ">", $code);
  394.  $code = str_replace("<", "<", $code);
  395.  $code = str_replace("&", "&", $code);
  396.  $code = str_replace('$', '\$', $code);
  397.  $code = str_replace('\n', '\\\\n', $code);
  398.  $code = str_replace('\r', '\\\\r', $code);
  399.  $code = str_replace('\t', '\\\\t', $code);
  400.  $code = str_replace("<br>", "\r\n", $code);
  401.  $code = str_replace("<br />", "\r\n", $code);
  402.  
  403.  $code = stripslashes($code);
  404.  
  405.  ob_start();
  406.  $oldlevel=error_reporting(0);
  407.  highlight_string($code);
  408.  error_reporting($oldlevel);
  409.  $buffer = ob_get_contents();
  410.  ob_end_clean();
  411.  //$buffer = str_replace(""", "\"", $buffer);
  412.  return "<blockquote><pre><font size=1>php:</font><hr>$buffer<hr></pre></blockquote>";
  413. }
  414.  
  415.  
  416. function prepare_quote($out) {
  417.         global $zensur;
  418.         $out = editDBdata($out);
  419.         if($zensur == 1) $out = censor($out);
  420.         return $out;
  421. }
  422. function prepare_topic($out) { 
  423.     return htmlspecialchars(nt_wordwrap(editDBdata($out),40)); 
  424. }
  425.  
  426. # -------- sonstige
  427.  
  428. function getMod($id) {
  429.         global $boardid,$styleid,$session,$db_zugriff,$n;
  430.         $result = $db_zugriff->query("SELECT objectid FROM bb".$n."_object2board WHERE boardid = '$id' AND mod = 1"); 
  431.         while($row = $db_zugriff->fetch_array($result)) {
  432.             if($mods) $mods .= ", ";
  433.             $mods .= "<a href=\"members.php?mode=profile&userid=".$row[objectid]."&boardid=$boardid&styleid=$styleid$session\">".getUsername($row[objectid])."</a>";
  434.         }
  435.         return $mods;
  436. }
  437. function getLastAuthor($threadid) {
  438.         global $boardid,$n,$db_zugriff,$session;
  439.         $result = $db_zugriff->query_first("SELECT userid FROM bb".$n."_posts WHERE threadparentid='$threadid' ORDER by posttime DESC LIMIT 1");
  440.         return "<a href=\"members.php?mode=profile&userid=$result[userid]&boardid=$boardid$session\">".getUsername($result[userid])."</a>";
  441. }
  442. function getThreadflag($threadid) {
  443.         global $n,$db_zugriff;
  444.         $result = $db_zugriff->query_first("SELECT flags FROM bb".$n."_threads WHERE threadid='$threadid'");
  445.         return $result[flags];
  446. }
  447. function getBoardname($boardid) {
  448.         global $n,$db_zugriff;
  449.         $result = $db_zugriff->query_first("SELECT boardname FROM bb".$n."_boards WHERE boardid='$boardid'");
  450.         return prepare_topic($result[boardname]);
  451. }
  452. function getThreadname($threadid) {
  453.         global $n,$db_zugriff;
  454.         $result = $db_zugriff->query_first("SELECT threadname FROM bb".$n."_threads WHERE threadid='$threadid'");
  455.         return prepare_topic($result[threadname]);
  456. }
  457. function getLastPost($id,$nr) {
  458.         global $eproseite, $n, $db_zugriff, $session, $longdateformat, $postorder;
  459.         if($nr==1) {
  460.                 $result = $db_zugriff->query_first("SELECT threadid,replies FROM bb".$n."_threads WHERE boardparentid='$id' ORDER by timelastreply DESC LIMIT 1");
  461.                 $threadid = $result[threadid];
  462.                    if($postorder) return "thread.php?threadid=".$threadid."&boardid=".$id."$session&page=1#1";
  463.                 else {
  464.                     $posts = $result[replies]+1;
  465.             $pages=(int)($posts/$eproseite);
  466.                     if(($posts/$eproseite)-$pages>0) $pages++;
  467.                     return "thread.php?threadid=".$threadid."&boardid=".$id."$session&page=".$pages."#".$posts;
  468.             }
  469.         }
  470.         if($nr==2) {
  471.                 $result = $db_zugriff->query_first("SELECT boardparentid,replies FROM bb".$n."_threads WHERE threadid='$id' LIMIT 1");
  472.                 $boardid = $result[boardparentid];
  473.                 if($postorder) return "thread.php?threadid=".$id."&boardid=".$boardid."$session&page=1#1";
  474.                 else {
  475.                     $posts = $result[replies]+1;
  476.             $pages=(int)($posts/$eproseite);
  477.                     if(($posts/$eproseite)-$pages>0) $pages++;
  478.             return "thread.php?threadid=".$id."&boardid=".$boardid."$session&page=".$pages."#".$posts;
  479.         }
  480.         }
  481.         if($nr==4) {
  482.                 $result = $db_zugriff->query_first("SELECT threadparentid, boardparentid FROM bb".$n."_posts WHERE userid='$id' ORDER by posttime DESC LIMIT 1");
  483.                    $threadid = $result[threadparentid];
  484.                 if($postorder) return "thread.php?threadid=".$threadid."&boardid=".$result[boardparentid]."$session&page=1#1";
  485.             else {
  486.                     $result = $db_zugriff->query_first("SELECT boardparentid,replies FROM bb".$n."_threads WHERE threadid='$threadid'");
  487.                     $posts = $result[replies]+1;
  488.                     $pages=(int)($posts/$eproseite);
  489.                     if(($posts/$eproseite)-$pages>0) $pages++;
  490.                     return "thread.php?threadid=".$threadid."&boardid=".$result[boardparentid]."&styleid=$styleid$session&page=".$pages."#".$posts;
  491.             }
  492.         }
  493.         if($nr==5) {
  494.                 $result = $db_zugriff->query_first("SELECT threadparentid, boardparentid FROM bb".$n."_posts WHERE userid='$id' ORDER by posttime DESC LIMIT 1");
  495.                    $threadid = $result[threadparentid];
  496.                 if($postorder) return "thread.php?threadid=".$threadid."&boardid=".$result[boardparentid]."$session&page=1#1";
  497.             else {
  498.                     $result = $db_zugriff->query_first("SELECT boardparentid,replies FROM bb".$n."_threads WHERE threadid='$threadid'");
  499.                     $posts = $result[replies]+1;
  500.                     $pages=(int)($posts/$eproseite);
  501.                     if(($posts/$eproseite)-$pages>0) $pages++;
  502.                     return "thread.php?threadid=".$threadid."&boardid=".$result[boardparentid]."&styleid=$styleid$session&page=".$pages."#".$posts;
  503.             }
  504.         }
  505. }
  506. function firstnewPost($threadid,$time) {
  507.         global $eproseite,$n,$db_zugriff,$styleid,$session, $postorder;
  508.         $sthreadname = "sthread_".$threadid;
  509.     global $$sthreadname;
  510.     if($$sthreadname > $time) $time = $$sthreadname+1;
  511.         
  512.         $thread = $db_zugriff->query_first("SELECT boardparentid, replies FROM bb".$n."_threads WHERE threadid='$threadid' ORDER by timelastreply DESC");
  513.         $posts = $thread[replies]+1;
  514.  
  515.         $result = $db_zugriff->query("SELECT posttime FROM bb".$n."_posts WHERE threadparentid='$threadid' ORDER by posttime ".ifelse($postorder,"DESC","ASC"));
  516.         $i=1;
  517.         while($row = $db_zugriff->fetch_array($result)) {
  518.                 if($time<=$row[posttime]) break;
  519.                 $i++;
  520.         }
  521.         $db_zugriff->free_result($result);
  522.         $j=(int)($i/$eproseite);
  523.         if(($i/$eproseite)-$j>0) $j++;
  524.  
  525.         return "thread.php?threadid=".$threadid."&boardid=".$thread[boardparentid]."&styleid=$styleid$session&page=".$j."#".$i;
  526. }
  527. function checkuseronline($userid) {
  528.         global $n,$db_zugriff;
  529.         $user = $db_zugriff->query_first("SELECT COUNT(userid) as anzahl FROM bb".$n."_user_table WHERE userid='$userid' AND invisible='0'");
  530.         if($user[anzahl]) $anzahl = $db_zugriff->query_first("SELECT COUNT(zeit)as anzahl FROM bb".$n."_useronline WHERE userid='$userid'");
  531.         return $anzahl[anzahl];
  532. }
  533. function delPost($postid,$threadid,$boardid) {
  534.         global $n,$db_zugriff;
  535.         $threadinfo = $db_zugriff->query_first("SELECT replies FROM bb".$n."_threads WHERE threadid = '$threadid'");
  536.         if(!$threadinfo[replies]) {
  537.                 $author = $db_zugriff->query_first("SELECT userid FROM bb".$n."_posts WHERE postid = '$postid'");
  538.                 delUserposts($author[0]);
  539.                    $db_zugriff->query("DELETE FROM bb".$n."_threads WHERE threadid='$threadid'");
  540.                 $db_zugriff->query("DELETE FROM bb".$n."_posts WHERE postid='$postid'");
  541.                    
  542.                    $pinfo = $db_zugriff->query_first("SELECT postid, posttime, userid FROM bb".$n."_posts WHERE boardparentid = '$boardid' ORDER BY posttime DESC LIMIT 1");
  543.                 $db_zugriff->query("UPDATE bb".$n."_boards SET threads=threads-1, posts=posts-1, lastposttime = '$pinfo[posttime]', lastpostid = '$pinfo[postid]' WHERE boardid = '$boardid'");
  544.                 
  545.                 $db_zugriff->query("DELETE FROM bb".$n."_notify WHERE threadid='$threadid'");
  546.                 $db_zugriff->query("DELETE FROM bb".$n."_poll WHERE threadid='$threadid'");
  547.                 $db_zugriff->query("DELETE FROM bb".$n."_vote WHERE threadid='$threadid'");
  548.                 $db_zugriff->query("DELETE FROM bb".$n."_object2user WHERE objectid='$threadid' AND favthreads = 1");
  549.                 
  550.                 return 2;
  551.         }
  552.         else {
  553.                 $author = $db_zugriff->query_first("SELECT userid FROM bb".$n."_posts WHERE postid = '$postid'");
  554.                 delUserposts($author[0]);
  555.                 $db_zugriff->query("DELETE FROM bb".$n."_posts WHERE postid='$postid'");
  556.                 $tinfo=$db_zugriff->query_first("SELECT userid, posttime FROM bb".$n."_posts WHERE threadparentid='$threadid' ORDER BY posttime DESC");
  557.                 $db_zugriff->query("UPDATE bb".$n."_threads SET replies=replies-1, timelastreply='$tinfo[posttime]', lastposterid='$tinfo[userid]' WHERE threadid = '$threadid'");
  558.                 
  559.                 $pinfo = $db_zugriff->query_first("SELECT postid, posttime FROM bb".$n."_posts WHERE boardparentid = '$boardid' ORDER BY posttime DESC LIMIT 1");
  560.                 $db_zugriff->query("UPDATE bb".$n."_boards SET posts=posts-1, lastposttime = '$pinfo[posttime]', lastpostid = '$pinfo[postid]' WHERE boardid = '$boardid'");
  561.                 
  562.                 return 1;
  563.         }
  564. }
  565. function delUserposts($userid) {
  566.         global $n,$db_zugriff;
  567.         $db_zugriff->query("UPDATE bb".$n."_user_table SET userposts=userposts-1 WHERE userid='$userid'");
  568. }
  569. function formatdate($time,$format,$replacetoday=0) {
  570.     global $db_zugriff, $n, $timetype, $timeoffset, $today;
  571.     $time = $time+(3600*$timeoffset);
  572.     if(date("dmY", time()+(3600*$timeoffset))==date("dmY", $time) && $replacetoday) {
  573.         $position = strpos($today, "=");
  574.                 if($position!==false) {                            
  575.                     $pcover = substr($today, $position+1);
  576.                     $val = substr($today, 0, $position);
  577.                     $format = str_replace($val,$pcover, $format);
  578.                 }
  579.     }
  580.     $out = str_replace("DD",date("d", $time), $format);
  581.     $out = str_replace("MM",date("m", $time), $out);
  582.     $out = str_replace("YYYY",date("Y", $time), $out);
  583.     $out = str_replace("YY",date("y", $time), $out);
  584.     $out = str_replace("MN",get_month_name(date("n", $time)), $out);
  585.     if($timetype) { #12 Stunden
  586.         $out = str_replace("II","II ".date("A", $time), $out);    
  587.         $out = str_replace("HH",date("h", $time), $out);
  588.     }
  589.     else $out = str_replace("HH",date("H", $time), $out);
  590.     $out = str_replace("II",date("i", $time), $out);
  591.     return $out;
  592. }
  593. function gettemplate($template,$endung="htm") {
  594.         global $templatefolder;
  595.         if(!$templatefolder) $templatefolder = "templates";
  596.         return str_replace("\"","\\\"",implode("",file($templatefolder."/".$template.".".$endung)));
  597. }
  598. function dooutput($template) {
  599.         global $bgcolor, $tablebg, $tableb, $tablec, $tabled, $tablea, $font, $fontcolor, $fontcolorsec, $fontcolorthi, $fontcolorfour, $bgfixed, $bgimage;
  600.         
  601.         $template = str_replace("{pagebgcolor}","$bgcolor",$template);
  602.         $template = str_replace("{tablebordercolor}","$tablebg",$template);
  603.         $template = str_replace("{tablea}","$tablea",$template);
  604.         $template = str_replace("{tableb}","$tableb",$template);
  605.         $template = str_replace("{tablec}","$tablec",$template);
  606.         $template = str_replace("{tabled}","$tabled",$template);
  607.         $template = str_replace("{font}","$font",$template);
  608.         $template = str_replace("{fontcolorfirst}","$fontcolor",$template);
  609.         $template = str_replace("{fontcolorsecond}","$fontcolorsec",$template);
  610.         $template = str_replace("{fontcolorthird}","$fontcolorthi",$template);
  611.         $template = str_replace("{fontcolorfourth}","$fontcolorfour",$template);
  612.  
  613.         if($bgimage) $hgpicture = " background=\"$bgimage\"";
  614.         $template = str_replace("{hgpicture}","$hgpicture",$template);
  615.         if($bgfixed) $template = str_replace("{bgproperties}"," bgproperties=fixed",$template);
  616.         else $template = str_replace("{bgproperties}","",$template);
  617.         echo $template;
  618. }
  619.  
  620. // ##########################  Neuen Post einfügen * ########################################################
  621. function newPost($boardid,$threadid,$userid,$subject,$message,$posticon,$parseurl,$email,$disablesmilies,$signature,$close)
  622. {
  623.         global $n,$db_zugriff;
  624.         $thread_info = $db_zugriff->query_first("SELECT boardparentid,flags FROM bb".$n."_threads WHERE threadid='$threadid'");
  625.         if($thread_info[flags]==1) return 2;
  626.         else {
  627.                          $time = time();
  628.                         $subject = editPostdata($subject);
  629.                         $message = editPostdata($message);
  630.                         if($parseurl) $message = parseURL($message);
  631.  
  632.                         if($disablesmilies!=1) $disablesmilies=0;
  633.                         if($signature!=1) $signature=0;
  634.                         
  635.                         $db_zugriff->query("UPDATE bb".$n."_user_table SET userposts=userposts+1 WHERE userid='$userid'");
  636.                         $db_zugriff->query("UPDATE bb".$n."_threads SET replies=replies+1, lastposterid='$userid', timelastreply='$time' WHERE threadid='$threadid'");
  637.                         $ip = getenv(REMOTE_ADDR);
  638.                         $db_zugriff->query("INSERT INTO bb".$n."_posts (boardparentid,threadparentid,userid,posttime,posttopic,message,posticon,disable_smilies,signature,ip) VALUES ('$boardid','$threadid','$userid','$time','$subject','$message','$posticon','$disablesmilies','$signature','$ip')");
  639.                         
  640.                         $postid = $db_zugriff->insert_id();
  641.             $db_zugriff->query("UPDATE bb".$n."_boards SET posts=posts+1, lastposttime = '$time', lastpostid = '$postid' WHERE boardid = '$boardid'");    
  642.                                     
  643.                         sendEmail($userid,getLastPost($userid,5),$threadid,$boardid);
  644.                         if($email && $userid) {
  645.                             $check = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_notify WHERE threadid = '$threadid' AND userid = '$userid'");
  646.                             if(!$check[0]) $db_zugriff->query("INSERT INTO bb".$n."_notify VALUES ($threadid,$userid)");
  647.                           }
  648.                           if($close) $db_zugriff->query("UPDATE bb".$n."_threads SET flags = 1 WHERE threadid = '$threadid'");
  649.                         return 4;
  650.     }
  651. }
  652.  
  653. // ##########################  Useronline * ########################################################
  654. function useronline($user_id)
  655. {
  656.         global $timeout,$n,$db_zugriff,$rekord;
  657.         $deltime = time()-($timeout*60);
  658.         $db_zugriff->query("DELETE FROM bb".$n."_useronline WHERE zeit<'$deltime'");
  659.         if($user_id!=0) {
  660.                 $anzahl = $db_zugriff->query_first("SELECT COUNT(zeit)as anzahl FROM bb".$n."_useronline WHERE userid='$user_id'");
  661.                 if($anzahl[anzahl]) $db_zugriff->query("UPDATE bb".$n."_useronline SET zeit='".time()."' WHERE userid='$user_id'");
  662.                 else $db_zugriff->query("INSERT INTO bb".$n."_useronline VALUES ('".time()."','','$user_id')");
  663.         }
  664.         else {
  665.         $ip = getenv(REMOTE_ADDR);
  666.         $anzahl = $db_zugriff->query_first("SELECT COUNT(zeit)as anzahl FROM bb".$n."_useronline WHERE ip='$ip'");
  667.         if($anzahl[anzahl]) $db_zugriff->query("UPDATE bb".$n."_useronline SET zeit='".time()."' WHERE ip='$ip'");
  668.         else $db_zugriff->query("INSERT INTO bb".$n."_useronline VALUES ('".time()."','$ip','')");
  669.         }
  670.         $user = $db_zugriff->query_first("SELECT COUNT(zeit) as anzahl FROM bb".$n."_useronline");
  671.     if($user[anzahl]>$rekord) $db_zugriff->query("UPDATE bb".$n."_config set rekord='".$user[anzahl]."', rekordtime='".time()."'");
  672. }
  673. function sendEmail($userid,$link,$threadid,$boardid) {
  674.         global $boardid, $master_email, $php_path, $db_zugriff, $n;
  675.         $result = $db_zugriff->query("SELECT * FROM bb".$n."_notify WHERE threadid = '$threadid'");
  676.         if($db_zugriff->num_rows($result)) {
  677.             $boardname = getBoardname($boardid);
  678.                   $threadname = getThreadname($threadid);
  679.                   if($userid) $authorname = getUsername($userid);
  680.                   else eval ("\$authorname = \"".gettemplate("lg_anonymous")."\";");
  681.                   eval ("\$inhalt = \"".gettemplate("notify_inhalt")."\";");
  682.                 eval ("\$betreff = \"".gettemplate("notify_betreff")."\";");
  683.                 while($row = $db_zugriff->fetch_array($result)) {
  684.                         if($row[userid]==$userid) continue;
  685.                         $email = getUserEmail($row[userid]);
  686.                         mail($email,$betreff,$inhalt.$row[userid],"From: ".$master_email);
  687.                 }
  688.         }
  689. }
  690.  
  691. // ##########################  activation * ########################################################
  692. function activat($userid,$code)
  693. {
  694.         global $n,$db_zugriff;
  695.         $anzahluser = $db_zugriff->query_first("SELECT COUNT(userid)as anzahl FROM bb".$n."_user_table WHERE userid='$userid'");
  696.         if($anzahluser[anzahl]==0) return 1;
  697.         else {
  698.                 $result = $db_zugriff->query("SELECT activation FROM bb".$n."_user_table WHERE userid='$userid' && activation!='1'");
  699.                 $anzahluser = $db_zugriff->num_rows($result);
  700.                 if($anzahluser==0) return 2;
  701.                 else {
  702.                         $result = $db_zugriff->fetch_array($result);
  703.                         if($code==$result[activation]) $db_zugriff->query("UPDATE bb".$n."_user_table SET activation='1' WHERE userid='$userid'");
  704.                         else return 3;
  705.                 }
  706.         }
  707. }
  708.  
  709. function subscripe($userid,$id,$b_or_t) {
  710.         global $n,$db_zugriff,$favboards,$favthreads;
  711.         if($b_or_t == "b") $max = $favboards;
  712.         else $max = $favthreads;
  713.         $field = "fav".$b_or_t;
  714.         if(!check_userobject($userid,$id,$field)) {
  715.         $count = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_object2user WHERE userid = '$userid' AND $field = 1");
  716.         if($count[0] >= $max) eval ("\$output = \"".gettemplate("error24")."\";");
  717.         else $db_zugriff->query("INSERT INTO bb".$n."_object2user (userid,objectid,$field) VALUES ('$userid','$id','1')");
  718.     }
  719.         return $output;
  720. }
  721.  
  722. function rowcolor($zeile) {
  723.         if (($zeile/2) != floor($zeile/2)) $color="tableb";
  724.         else $color="tablec";
  725.         return $color;
  726. }
  727. function getBoardparent($threadid) {
  728.         global $n,$db_zugriff;
  729.         $result = $db_zugriff->query_first("SELECT boardparentid FROM bb".$n."_threads WHERE threadid='$threadid'");
  730.         return $result[boardparentid];
  731. }
  732. function unsubscripe($id,$userid,$b_or_t) {
  733.         global $n,$db_zugriff;
  734.         $field = "fav".$b_or_t;
  735.         $db_zugriff->query("DELETE FROM bb".$n."_object2user WHERE userid = '$userid' AND objectid = '$id' AND $field = 1");
  736. }
  737.  
  738. function getUserStars($posts,$groupid) {
  739.         global $n,$db_zugriff;
  740.         $result = $db_zugriff->query_first("SELECT id, rank, grafik, mal FROM bb".$n."_ranks WHERE groupid = $groupid AND posts<='$posts' ORDER by posts DESC");
  741.               
  742.         for($i = 0; $i<$result[mal]; $i++) {
  743.                 $out .= "<img src=\"$result[grafik]\" border=\"0\">";
  744.         }
  745.         return "<a href=\"javascript:rank($result[id])\" title=\"Informationen zum Rang $result[rank]\">".$out."</a>";
  746. }
  747. function formmail($absender,$message,$betreff,$useremail) {
  748.         global $master_board_name, $php_path;
  749.         $useremail = trim($useremail);
  750.         $message .= "\n\n_________________________________________________________________\nPowered by: ".$master_board_name." - ".$php_path;
  751.         $absender = "From: ".$absender;
  752.         mail($useremail,$betreff,$message,$absender);
  753. }
  754.  
  755. function report($userid,$postid,$boardid) {
  756.         global $master_board_name, $php_path, $master_email, $db_zugriff, $n;
  757.         $mod = $db_zugriff->query_first("SELECT bb".$n."_object2board.objectid, useremail FROM bb".$n."_object2board LEFT JOIN bb".$n."_user_table ON (bb".$n."_object2board.objectid=bb".$n."_user_table.userid) WHERE boardid='$boardid' AND mod=1");
  758.         if(!$mod[useremail]) $mod = $db_zugriff->query_first("SELECT bb".$n."_object2board.objectid, useremail FROM bb".$n."_object2board LEFT JOIN bb".$n."_user_table ON (bb".$n."_object2board.objectid=bb".$n."_user_table.userid) WHERE mod=1");
  759.         if(!$mod[useremail]) $mod = $db_zugriff->query_first("SELECT bb".$n."_groups.id, useremail FROM bb".$n."_groups LEFT JOIN bb".$n."_user_table ON (bb".$n."_groups.id=bb".$n."_user_table.groupid) WHERE ismod=1 OR issupermod=1 ORDER BY ismod DESC");      
  760.         $post = $db_zugriff->query_first("SELECT userid, message FROM bb".$n."_posts WHERE postid='$postid'");
  761.         $authorname = getUsername($post[userid]);
  762.         $username = getUsername($userid);
  763.         eval ("\$betreff = \"".gettemplate("report_betreff")."\";");
  764.         eval ("\$message = \"".gettemplate("report_mail")."\";");
  765.         mail(trim($mod[useremail]),$betreff,$message,"From: ".$master_email);
  766. }
  767.  
  768. // ###################### Get Code Buttons #######################
  769. function getcodebuttons() {
  770.         $modechecked[0] = "CHECKED";
  771.  
  772.         eval ("\$bbcode_sizebits = \"".gettemplate("bbcode_sizebits")."\";");
  773.         eval ("\$bbcode_fontbits = \"".gettemplate("bbcode_fontbits")."\";");
  774.         eval ("\$bbcode_colorbits = \"".gettemplate("bbcode_colorbits")."\";");
  775.         eval ("\$bbcode_alignbits = \"".gettemplate("bbcode_alignbits")."\";");
  776.         eval ("\$bbcode_buttons = \"".gettemplate("bbcode_buttons")."\";");
  777.         return $bbcode_buttons;
  778. }
  779.  
  780. // ###################### Get Clicky Smilies #######################
  781. function getclickysmilies ($tableColumns=3,$maxSmilies=-1) {
  782.         global $session,$boardid,$styleid, $db_zugriff, $n;
  783.  
  784.         $result = $db_zugriff->query("SELECT * FROM bb".$n."_smilies");
  785.     $totalSmilies = $db_zugriff->num_rows($result);
  786.  
  787.         if (($maxSmilies == -1) || ($maxSmilies >= $totalSmilies)) $maxSmilies = $totalSmilies;
  788.         elseif ($maxSmilies < $totalSmilies) eval ("\$bbcode_smilies_getmore = \"".gettemplate("bbcode_smilies_getmore")."\";");
  789.  
  790.     $i=0;
  791.         while($row = $db_zugriff->fetch_array($result)) {
  792.             eval ("\$smilieArray[\"".$i."\"] = \"".gettemplate("bbcode_smiliebit")."\";");
  793.             $i++;
  794.         }
  795.         $tableRows = ceil($maxSmilies/$tableColumns);
  796.         $count = 0;
  797.         for ($i=0; $i<$tableRows; $i++) {
  798.                 $smiliebits .= "\t<tr bgcolor=\"{tableb}\">\n";
  799.                 for ($j=0; $j<$tableColumns; $j++) {
  800.                         $smiliebits .= "\t<td align=\"center\">".$smilieArray[$count]." </td>\n";
  801.                         $count++;
  802.                 }
  803.                 $smiliebits .= "\t</tr>\n";
  804.         }
  805.  
  806.         eval ("\$bbcode_smilies = \"".gettemplate("bbcode_smilies")."\";");
  807.         return $bbcode_smilies;
  808. }
  809.  
  810. function getUserposts($name) {
  811.     global $db_zugriff, $n;
  812.     $result = $db_zugriff->query_first("SELECT userposts FROM bb".$n."_user_table WHERE username='$name'");
  813.     return $result[userposts];
  814. }
  815. function check_boardobject($boardid,$objectid,$field) {
  816.     global $n,$db_zugriff;
  817.     $result = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_object2board WHERE boardid = '$boardid' AND objectid = '$objectid' AND $field = 1");
  818.     return $result[0];
  819. }
  820. function check_userobject($userid,$objectid,$field) {
  821.     global $n,$db_zugriff;
  822.     $result = $db_zugriff->query_first("SELECT COUNT(*) FROM bb".$n."_object2user WHERE userid = '$userid' AND objectid = '$objectid' AND $field = 1");
  823.     return $result[0];
  824. }
  825. function checkemail($email, $db=0) {
  826.     global $db_zugriff, $n, $multi_email, $banemail;
  827.     if(!substr_count($email,"@") || substr_count($email,"@")>1) return 1;
  828.     $position1 = strrpos($email,"@");
  829.     if(!$position1) return 1;
  830.     $position2 = strrpos($email,".");
  831.     if(!$position2) return 1;
  832.     if(strlen(substr($email, $position2)) < 3)return 1;
  833.     if(strlen(substr($email, $position1,$position2-$position1-1))<2) return 1;
  834.     if(!$multi_email && !$db) {
  835.         $check = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE useremail = '$email'");
  836.         if($check[0]) return 1;
  837.     }
  838.     $banemail = explode("\n",$banemail);
  839.     for($i = 0; $i < count($banemail); $i++) {
  840.         if(!trim($banemail[$i])) continue;
  841.         if(ereg("\*", $banemail[$i])) {
  842.             $banemail[$i] = str_replace("*",".*", trim($banemail[$i]));
  843.             if(eregi("$banemail[$i]", $email)) return 1;
  844.             break;
  845.         }
  846.         elseif(strtolower($email)==strtolower(trim($banemail[$i]))) {
  847.             return 1;
  848.             break;
  849.         }  
  850.     }
  851. }
  852.  
  853. function checkname($name) {
  854.     
  855.     global $db_zugriff, $n, $banname;
  856.     $bannames = explode("\r\n", trim($banname));
  857.     for($i=0;$i<count($bannames);$i++) {
  858.      $bannames[$i] = trim($bannames[$i]);
  859.      if(!$bannames[$i]) continue;
  860.      if($name==$bannames[$i]) return 1;
  861.     }
  862.     $check = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE username = '$name'");
  863.     return $check[0];
  864. }
  865.  
  866. function checkpw($userid,$password) {
  867.  
  868.     global $db_zugriff, $n;
  869.     $check = $db_zugriff->query_first("SELECT COUNT(userid) FROM bb".$n."_user_table WHERE userid = '$userid' AND userpassword = '$password'");
  870.     return $check[0];
  871. }
  872.  
  873. function getAvatar($id) {
  874.     global $db_zugriff, $n;
  875.     $result = $db_zugriff->query_first("SELECT extension FROM bb".$n."_avatars WHERE id = '$id'");
  876.     return "images/avatars/avatar-".$id.".".$result[extension];
  877.  
  878. }
  879. function nt_wordwrap($text, $width = 75) {
  880.          if($text) return preg_replace("/([^\n\r ?&\.\/<>\"\\-]{".$width."})/i"," \\1\n",$text);
  881. }
  882. function makepagelink($link, $page, $pages) {
  883.     $page_link = "<b>[";
  884.     if($page!=1) $page_link .= "  <a href=\"$link&page=1\">«</a>  <a href=\"$link&page=".($page-1)."\">‹</a>";
  885.     if($page>=6) $page_link .= "  <a href=\"$link&page=".($page-5)."\">...</a>";
  886.     if($page+4>=$pages) $pagex=$pages;
  887.     else $pagex=$page+4;
  888.     for($i=$page-4 ; $i<=$pagex ; $i++) {     
  889.         if($i<=0) $i=1;
  890.         if($i==$page) $page_link .= "  $i";
  891.         else $page_link .= "  <a href=\"$link&page=$i\">$i</a>";
  892.     }
  893.     if(($pages-$page)>=5) $page_link .= "  <a href=\"$link&page=".($page+5)."\">...</a>";
  894.     if($page!=$pages) $page_link .= "  <a href=\"$link&page=".($page+1)."\">›</a>  <a href=\"$link&page=".$pages."\">»</a>";
  895.     $page_link .= "  ]</b>";
  896.  
  897.     return $page_link;
  898. }
  899.  
  900. function floodcontrol($user_id) {
  901.     global $fctime, $db_zugriff, $n;
  902.     $check_time = time()-$fctime;
  903.     $result = $db_zugriff->query_first("SELECT COUNT(postid) FROM bb".$n."_posts WHERE userid = '$user_id' AND posttime > '$check_time'");
  904.     return $result[0];
  905. }
  906. function makeforumbit($boardid,$depth=1,$subscripe=0) {
  907.   global $db_zugriff, $n, $show_subboards, $boardcache, $permissioncache, $modcache, $forumhomedepth, $session, $old_time, $user_group, $longdateformat;
  908.  
  909.   if ( !isset($boardcache[$boardid]) ) {
  910.     return;
  911.   }
  912.  
  913.   while ( list($key1,$val1)=each($boardcache[$boardid]) ) {
  914.     while ( list($key2,$boards)=each($val1) ) {
  915.     if($subscripe) eval ("\$delboard = \"".gettemplate("profile_subscripe_delboard")."\";");
  916.     if($boards[invisible] && !$permissioncache[$boards[boardid]]) continue;
  917.     if($boards[isboard]) { //board
  918.         if($depth==2 && $show_subboards==1) {
  919.             $subboards=getSubboards($boards[boardid]);
  920.             if($subboards) $subboards=ifelse($boards[descriptiontext],"<br>","")."Inklusive: ".substr($subboards, 0, -2);    
  921.         }
  922.         $boards[descriptiontext] = editDBdata($boards[descriptiontext]);
  923.         $boards[boardname] = editDBdata($boards[boardname]);
  924.         if($old_time <= $boards[lastposttime]) eval ("\$on_or_off = \"".gettemplate("main_newposts")."\";");
  925.         else eval ("\$on_or_off = \"".gettemplate("main_nonewposts")."\";");
  926.     
  927.         if($boards[lastpostid]) {
  928.             $lastposttime = formatdate($boards[posttime],$longdateformat,1);
  929.             if($boards[userid]) $lastauthor = "<a href=\"members.php?mode=profile&userid=$boards[userid]$session\">$boards[username]</a>";
  930.             else eval ("\$lastauthor = \"".gettemplate("lg_anonymous")."\";");
  931.             $boards[threadname] = prepare_topic($boards[threadname]);
  932.             if (!$boards[topicicon]) $ViewPosticon = "<img src=\"images/icons/noicon.gif\">";
  933.             else $ViewPosticon = "<img src=\"$boards[topicicon]\">";
  934.             if ($permissioncache[$boards[boardid]]) $template=main_lastpost;
  935.             else $template=main_lastpost2;
  936.             if (strlen($boards[threadname]) > '30') $ViewThreadname = substr($boards[threadname], 0, 27)."...";
  937.                 else $ViewThreadname = $boards[threadname];
  938.                 eval ("\$last_post = \"".gettemplate("$template")."\";");
  939.         }
  940.         else $last_post = " ";
  941.         
  942.         if(isset($modcache[$boards[boardid]])) {
  943.             while (list($mkey,$moderator)=each($modcache[$boards[boardid]])) {
  944.                         if (isset($moderators)) $moderators .= ", ";
  945.                         $moderators .= "<a href=\"members.php?mode=profile&userid=$moderator[userid]$session\">$moderator[username]</a>";
  946.             }
  947.         }
  948.         eval ("\$out .= \"".gettemplate("main_boardbit$depth")."\";");
  949.         unset($moderators);
  950.         
  951.     }
  952.     else { //cat
  953.         if($depth==2 && $show_subboards==1) {
  954.             $subboards=getSubboards($boards[boardid]);
  955.             if($subboards) $subboards=ifelse($boards[descriptiontext],"<br>","")."Inklusive: ".substr($subboards, 0, -2);    
  956.         }
  957.         $boards[descriptiontext] = editDBdata($boards[descriptiontext]);
  958.         $boards[boardname] = editDBdata($boards[boardname]);
  959.         eval ("\$out .= \"".gettemplate("main_catbit$depth")."\";");
  960.     }
  961.         if ($depth<2) {
  962.           $out.=makeforumbit($boards[boardid],$depth+1);
  963.         }
  964.     } 
  965.   } 
  966.   unset($boardcache[$boardid]);
  967.   return $out;
  968. }
  969.  
  970. function makenavichain($template, $boardid, $threadid=0) {
  971.     global $db_zugriff, $n, $session;
  972.     if($template == "board") {
  973.         $binfo = $db_zugriff->query_first("SELECT boardparentid, boardname FROM bb".$n."_boards WHERE boardid = '$boardid'");
  974.         $binfo[boardname] = editDBdata($binfo[boardname]);
  975.         $result[boardparentid] = $binfo[boardparentid];
  976.     }
  977.     else $result[boardparentid] = $boardid;
  978.     eval ("\$split = \"".gettemplate("navi_split")."\";");
  979.     do {
  980.         $result = $db_zugriff->query_first("SELECT boardid, boardparentid, boardname FROM bb".$n."_boards WHERE boardid = '$result[boardparentid]'");    
  981.         if(!$result[boardid]) break;
  982.         $out = $split."<a href=\"board.php?boardid=$result[boardid]$session\">".editDBdata($result[boardname])."</a>".$out;    
  983.     }
  984.     while($result[boardparentid]!=0);
  985.     
  986.     if($threadid) {
  987.         $tinfo = $db_zugriff->query_first("SELECT threadname FROM bb".$n."_threads WHERE threadid = '$threadid'");
  988.         $tinfo[threadname] = prepare_topic($tinfo[threadname]);
  989.     }
  990.     eval ("\$ende = \"".gettemplate("navi_".$template)."\";");
  991.     return $out.$ende;
  992. }
  993. function get_month_name($month_number) {
  994.     $name_monat[1]    =  "Januar";  
  995.     $name_monat[2]    =  "Februar";  
  996.     $name_monat[3]    =  "März";  
  997.     $name_monat[4]    =  "April";  
  998.     $name_monat[5]    =  "Mai";  
  999.     $name_monat[6]    =  "Juni";  
  1000.     $name_monat[7]    =  "Juli";  
  1001.     $name_monat[8]    =  "August";  
  1002.     $name_monat[9]    =  "September";  
  1003.     $name_monat[10]  =  "Oktober";  
  1004.     $name_monat[11]  =  "November";  
  1005.     $name_monat[12]  =  "Dezember";
  1006.     
  1007.     return $name_monat[$month_number];
  1008. }
  1009.  
  1010. function editURL($url) {
  1011.         if(strtolower(substr($url,0,7))!="http://") $url="http://".$url;
  1012.         return $url;
  1013. }
  1014.  
  1015. function prepare_code($out) { 
  1016.  global $db_zugriff,$n,$searcharray,$replacearray;
  1017.  $phpversionnum = phpversion();
  1018.  
  1019.  if(!isset($searcharray) && !isset($replacearray)) {
  1020.   $searcharray[]="/\[list=(['\"]?)([^\"']*)\\1](.*)\[\/list((=\\1[^\"']*\\1])|(\]))/esiU";
  1021.   $replacearray[]="formatlist('\\3', '\\2')"; 
  1022.   $searcharray[]="/\[list](.*)\[\/list\]/esiU";    
  1023.   $replacearray[]="formatlist('\\1')"; 
  1024.   $searcharray[]="/\[url=(['\"]?)([^\"']*)\\1](.*)\[\/url\]/esiU";
  1025.   $replacearray[]="formaturl('\\2','\\3')";
  1026.   $searcharray[]="/\[url]([^\"]*)\[\/url\]/esiU";    
  1027.   $replacearray[]="formaturl('\\1')";
  1028.   $searcharray[]="/\[code](.*)\[\/code\]/esiU";    
  1029.   $replacearray[]="formatcodetag('\\1')";
  1030.   $searcharray[]="/\[php](.*)\[\/php\]/esiU";    
  1031.   $replacearray[]="phphighlite('\\1')";
  1032.   $searcharray[]="/\[img]([^\"]*)\[\/img\]/siU";    
  1033.   $replacearray[]="<img src=\"\\1\" border=0>"; 
  1034.   
  1035.   $threeparams = "/\[%s=(['\"]?)([^\"']*),([^\"']*)\\1](.*)\[\/%s\]/siU";
  1036.   $twoparams = "/\[%s=(['\"]?)([^\"']*)\\1](.*)\[\/%s\]/siU";
  1037.   $oneparam = "/\[%s](.*)\[\/%s\]/siU"; 
  1038.  
  1039.   $result = $db_zugriff->query("SELECT bbcodetag,bbcodereplace,params FROM bb".$n."_bbcode");
  1040.  
  1041.   while($row = $db_zugriff->fetch_array($result)) {
  1042.    if($row[params]==0) continue;
  1043.    if($row[params]==1) $search = sprintf($oneparam, $row[bbcodetag], $row[bbcodetag]);
  1044.    if($row[params]==2) $search = sprintf($twoparams, $row[bbcodetag], $row[bbcodetag]);
  1045.    if($row[params]==3) $search = sprintf($threeparams, $row[bbcodetag], $row[bbcodetag]);
  1046.             
  1047.    $searcharray[] = $search;
  1048.    $replacearray[] = $row[bbcodereplace];
  1049.    $searcharray[] = $search;
  1050.    $replacearray[] = $row[bbcodereplace];
  1051.    $searcharray[] = $search;
  1052.    $replacearray[] = $row[bbcodereplace];
  1053.   } 
  1054.  }
  1055.  
  1056.  if ($phpversionnum<"4.0.5") $bbcode=str_replace("'", "\'", $out);
  1057.  $out = preg_replace($searcharray, $replacearray, $out);
  1058.  $out = str_replace("\\'", "'", $out);
  1059.  return $out;
  1060. }
  1061.  
  1062. function getSubboards($boardid) {
  1063.     global $boardcache,$session;
  1064.  
  1065.     if (!isset($boardcache[$boardid])) return;
  1066.   
  1067.     while(list($key1,$val1)=each($boardcache[$boardid])) {
  1068.         while(list($key2,$boards)=each($val1)) {
  1069.             $subboards.="<a href=\"board.php?boardid=$boards[boardid]$session\">".editDBdata($boards[boardname])."</a>, ".getSubboards($boards[boardid],$boards);
  1070.         }
  1071.     }
  1072.      
  1073.      return $subboards;
  1074. }
  1075.  
  1076. ?>